package com.xxjqr.rbac.controller;


import com.xxjqr.rbac.entity.dto.DeptDto;
import com.xxjqr.rbac.entity.vo.DeptVo;
import com.xxjqr.rbac.enums.CodeMsgEnum;
import com.xxjqr.rbac.exception.CommonException;
import com.xxjqr.rbac.service.TbDeptService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author 丁昌江
 * @since 2021-02-02
 */
@RestController
@RequestMapping("dept")
@AllArgsConstructor
public class TbDeptController {

    private final TbDeptService deptService;

    /**
     * @描述 addDept
     * @码农 丁昌江
     * @日期 2021/2/5 23:44
     * @param dto
     * @返回 java.lang.String
     */
    @PostMapping("addDept")
    public Boolean addDept(@RequestBody @Valid DeptDto dto) {
        if (dto.getParentId() == null) {
            dto.setParentId(0L);
        }
        if (deptService.addDept(dto) > 0) {
            return true;
        }
        return false;
    }

    @PutMapping("editDept")
    public Boolean editDept(@RequestBody DeptDto dto) {
        if (dto == null || dto.getId() == null) {
            throw CommonException.generate(CodeMsgEnum.NOTFOUND);
        }
        return deptService.editDept(dto);
    }

    /**
     * @描述 getDeptTree
     * @码农 丁昌江
     * @日期 2021/2/5 23:42
     * @param name
     * @param status
     * @返回 java.util.List<com.xxjqr.rbac.entity.vo.DeptVo>
     */
    @GetMapping("getDeptTree")
    public List<DeptVo> getDeptTree(String name, Integer status) {
        return deptService.getDeptTree(name, status);
    }


    /**
     * @描述 delDept
     * @码农 丁昌江
     * @日期 2021/2/5 23:48
     * @param id
     * @返回 java.lang.String
     */
    @DeleteMapping("delDept")
    public String delDept(@RequestParam Long id) {

        if (deptService.delDept(id) > 0) {
            return "删除成功";
        } else {
            throw CommonException.generate(CodeMsgEnum.NOTFOUND);
        }
    }
}
